package y2015.date0916am.多线程聊天室.TcpServer;

import y2015.date0916am.多线程聊天室.TcpClient.DateAndTime;

import java.io.*;
import java.net.Socket;

public class CommThread extends Thread {

    private Socket socket;

    public CommThread(Socket socket) {
        super();
        this.socket = socket;
    }


    @Override
    public void run() {
        PrintWriter pw = null;//文本输出流打印变量
        BufferedReader br = null;

        try {
            String welcome = "Welcome to 尼玛-Chat v1.1";

            // 1.通过传入的套接字获取输出流,用以对客户端输出数据
            OutputStream out = socket.getOutputStream();
            pw = new PrintWriter(out);//创建输出流打印实例
            pw.println(welcome);//打印 String，然后终止该行。不能直接使用print()
            pw.flush();
            System.out.println("【系统】欢迎语（" + welcome + "）已经发送。");
            System.out.println("----------------------------------------");

            // 2.接收客户端数据
            InputStream in = socket.getInputStream();//输入流
            InputStreamReader isr = new InputStreamReader(in);//InputStreamReader 是字节流通向字符流的桥梁：它使用指定的 charset 读取字节并将其解码为字符。
            br = new BufferedReader(isr);
            String client_input;
            //循环接收客户端数据
            while (true) {
                client_input = br.readLine();
                DateAndTime inputTime = new DateAndTime();
                System.out.println(inputTime.getDateAndTime() + "\n客户端：" + client_input);
                if ("exit".equalsIgnoreCase(client_input)) {
                    System.out.println("【系统】客户端已断开。");
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭
            if (pw != null) {
                pw.close();
            }
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}

